package jm.nj.demo12mian.demo03;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.io.PrintWriter;

/*
 * 打印流添加输出数据的功能,使他们能够方便的打印各种数据
 * 打印流分类:
 *       字节打印流  PrintStream
 *        字符打印流 PrinWriter
 * 打印流的特点
 *       1.此流不负责来源,只负责数据目的
 *       2.为其他输出流添加了功能
 *       3.不会抛出IOException,但可能抛出其他异常
 * 两个打印流中的方法,完全一致:
 *       void print(Object obj):输出任意类型数据
 *       void println(Object obj):出任意类型数据,自动换行
 * 构造方法就是打印输出端
 *       PrintStream
 *           构造方法接受File类型,接受字符串文件名,接受字节输出流outputStream
 *       PrintWriter
 *            构造方法接受File类型,接受字符串文件名,接受字节输出流outputStream
 *       接收字符输出流Writer
 *
 * 区别;
 *       字节流,把数据直接写入到文件中不需要刷新
 *       字符流,把数据写入到内存中,需要刷新
 *       字符打印流可以使用字节打印流
 *       字节打印流不能使用支付打印流
 * */
public class DemoPRintStream {
    public static void main(String[] args) throws FileNotFoundException {
        demo01();
        demo02();
    }
/*
* 打印流输出目的,String文件名
* */
    private static void demo02() throws FileNotFoundException {
        PrintWriter pw = new PrintWriter("D:\\2.txt");
        pw.print(true);
        pw.print("我不会换行");
        pw.print("我需要刷新");
        pw.flush();
        pw.close();

        //UTF-8   GBK  均可
    }

    /*
     * 打印流,向File文件对象的数据目的地写入数据
     * 方法print  println  原样输出
     * write方法  走编码表
     * */
    private static void demo01() throws FileNotFoundException {
        File file = new File("D:\\1.txt");
        PrintStream ps = new PrintStream(file);
        ps.println("我是字节打印流");
        ps.println(97);
        ps.println('a');
        ps.println(3.12);
        ps.write(97);
        ps.close();

        //UTF-8  中文不能使用
    }
}
